home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / CSS.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  15.5 KB  |  551 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.Serializable;
  9. import java.util.Enumeration;
  10. import java.util.Hashtable;
  11. import javax.swing.text.AttributeSet;
  12. import javax.swing.text.Element;
  13. import javax.swing.text.MutableAttributeSet;
  14. import javax.swing.text.SimpleAttributeSet;
  15. import javax.swing.text.StyleConstants;
  16. import javax.swing.text.StyleContext;
  17. import javax.swing.text.html.HTML.Tag;
  18.  
  19. public class CSS {
  20.    private static final Hashtable attributeMap = new Hashtable();
  21.    private static final Hashtable valueMap = new Hashtable();
  22.    static int[] sizeMap = new int[]{8, 10, 12, 14, 18, 24, 36};
  23.    private static final Hashtable htmlAttrToCssAttrMap = new Hashtable(20);
  24.    private static final Hashtable styleConstantToCssMap = new Hashtable(17);
  25.    private static final Hashtable htmlValueToCssValueMap = new Hashtable(8);
  26.    private static final Hashtable cssValueToInternalValueMap = new Hashtable(8);
  27.    private transient Hashtable valueConvertor = new Hashtable();
  28.    private int baseFontSize = 3;
  29.  
  30.    static {
  31.       for(int var0 = 0; var0 < javax.swing.text.html.CSS.Attribute.allAttributes.length; ++var0) {
  32.          attributeMap.put(javax.swing.text.html.CSS.Attribute.allAttributes[var0].toString(), javax.swing.text.html.CSS.Attribute.allAttributes[var0]);
  33.       }
  34.  
  35.       for(int var1 = 0; var1 < javax.swing.text.html.CSS.Value.allValues.length; ++var1) {
  36.          valueMap.put(javax.swing.text.html.CSS.Value.allValues[var1].toString(), javax.swing.text.html.CSS.Value.allValues[var1]);
  37.       }
  38.  
  39.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.COLOR, new Attribute[]{javax.swing.text.html.CSS.Attribute.COLOR});
  40.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.TEXT, new Attribute[]{javax.swing.text.html.CSS.Attribute.COLOR});
  41.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.CLEAR, new Attribute[]{javax.swing.text.html.CSS.Attribute.CLEAR});
  42.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.BACKGROUND, new Attribute[]{javax.swing.text.html.CSS.Attribute.BACKGROUND_IMAGE});
  43.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.BGCOLOR, new Attribute[]{javax.swing.text.html.CSS.Attribute.BACKGROUND_COLOR});
  44.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.WIDTH, new Attribute[]{javax.swing.text.html.CSS.Attribute.WIDTH});
  45.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.HEIGHT, new Attribute[]{javax.swing.text.html.CSS.Attribute.HEIGHT});
  46.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.BORDER, new Attribute[]{javax.swing.text.html.CSS.Attribute.BORDER_WIDTH});
  47.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.CELLPADDING, new Attribute[]{javax.swing.text.html.CSS.Attribute.PADDING});
  48.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.CELLSPACING, new Attribute[]{javax.swing.text.html.CSS.Attribute.MARGIN});
  49.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.MARGINWIDTH, new Attribute[]{javax.swing.text.html.CSS.Attribute.MARGIN_LEFT, javax.swing.text.html.CSS.Attribute.MARGIN_RIGHT});
  50.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.MARGINHEIGHT, new Attribute[]{javax.swing.text.html.CSS.Attribute.MARGIN_TOP, javax.swing.text.html.CSS.Attribute.MARGIN_BOTTOM});
  51.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.HSPACE, new Attribute[]{javax.swing.text.html.CSS.Attribute.PADDING_LEFT, javax.swing.text.html.CSS.Attribute.PADDING_RIGHT});
  52.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.VSPACE, new Attribute[]{javax.swing.text.html.CSS.Attribute.PADDING_BOTTOM, javax.swing.text.html.CSS.Attribute.PADDING_TOP});
  53.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.FACE, new Attribute[]{javax.swing.text.html.CSS.Attribute.FONT_FAMILY});
  54.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.SIZE, new Attribute[]{javax.swing.text.html.CSS.Attribute.FONT_SIZE});
  55.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.VALIGN, new Attribute[]{javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN});
  56.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.ALIGN, new Attribute[]{javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN, javax.swing.text.html.CSS.Attribute.TEXT_ALIGN, javax.swing.text.html.CSS.Attribute.FLOAT});
  57.       htmlAttrToCssAttrMap.put(javax.swing.text.html.HTML.Attribute.TYPE, new Attribute[]{javax.swing.text.html.CSS.Attribute.LIST_STYLE_TYPE});
  58.       styleConstantToCssMap.put(StyleConstants.FontFamily, javax.swing.text.html.CSS.Attribute.FONT_FAMILY);
  59.       styleConstantToCssMap.put(StyleConstants.FontSize, javax.swing.text.html.CSS.Attribute.FONT_SIZE);
  60.       styleConstantToCssMap.put(StyleConstants.Bold, javax.swing.text.html.CSS.Attribute.FONT_WEIGHT);
  61.       styleConstantToCssMap.put(StyleConstants.Italic, javax.swing.text.html.CSS.Attribute.FONT_STYLE);
  62.       styleConstantToCssMap.put(StyleConstants.Underline, javax.swing.text.html.CSS.Attribute.TEXT_DECORATION);
  63.       styleConstantToCssMap.put(StyleConstants.StrikeThrough, javax.swing.text.html.CSS.Attribute.TEXT_DECORATION);
  64.       styleConstantToCssMap.put(StyleConstants.Superscript, javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN);
  65.       styleConstantToCssMap.put(StyleConstants.Subscript, javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN);
  66.       styleConstantToCssMap.put(StyleConstants.Foreground, javax.swing.text.html.CSS.Attribute.COLOR);
  67.       styleConstantToCssMap.put(StyleConstants.Background, javax.swing.text.html.CSS.Attribute.BACKGROUND_COLOR);
  68.       styleConstantToCssMap.put(StyleConstants.FirstLineIndent, javax.swing.text.html.CSS.Attribute.TEXT_INDENT);
  69.       styleConstantToCssMap.put(StyleConstants.LeftIndent, javax.swing.text.html.CSS.Attribute.MARGIN_LEFT);
  70.       styleConstantToCssMap.put(StyleConstants.RightIndent, javax.swing.text.html.CSS.Attribute.MARGIN_RIGHT);
  71.       styleConstantToCssMap.put(StyleConstants.SpaceAbove, javax.swing.text.html.CSS.Attribute.MARGIN_TOP);
  72.       styleConstantToCssMap.put(StyleConstants.SpaceBelow, javax.swing.text.html.CSS.Attribute.MARGIN_BOTTOM);
  73.       styleConstantToCssMap.put(StyleConstants.Alignment, javax.swing.text.html.CSS.Attribute.TEXT_ALIGN);
  74.       htmlValueToCssValueMap.put("disc", javax.swing.text.html.CSS.Value.DISC);
  75.       htmlValueToCssValueMap.put("square", javax.swing.text.html.CSS.Value.SQUARE);
  76.       htmlValueToCssValueMap.put("circle", javax.swing.text.html.CSS.Value.CIRCLE);
  77.       htmlValueToCssValueMap.put("1", javax.swing.text.html.CSS.Value.DECIMAL);
  78.       htmlValueToCssValueMap.put("a", javax.swing.text.html.CSS.Value.LOWER_ALPHA);
  79.       htmlValueToCssValueMap.put("A", javax.swing.text.html.CSS.Value.UPPER_ALPHA);
  80.       htmlValueToCssValueMap.put("i", javax.swing.text.html.CSS.Value.LOWER_ROMAN);
  81.       htmlValueToCssValueMap.put("I", javax.swing.text.html.CSS.Value.UPPER_ROMAN);
  82.       cssValueToInternalValueMap.put("disc", javax.swing.text.html.CSS.Value.DISC);
  83.       cssValueToInternalValueMap.put("square", javax.swing.text.html.CSS.Value.SQUARE);
  84.       cssValueToInternalValueMap.put("circle", javax.swing.text.html.CSS.Value.CIRCLE);
  85.       cssValueToInternalValueMap.put("decimal", javax.swing.text.html.CSS.Value.DECIMAL);
  86.       cssValueToInternalValueMap.put("lower-roman", javax.swing.text.html.CSS.Value.LOWER_ROMAN);
  87.       cssValueToInternalValueMap.put("upper-roman", javax.swing.text.html.CSS.Value.UPPER_ROMAN);
  88.       cssValueToInternalValueMap.put("lower-alpha", javax.swing.text.html.CSS.Value.LOWER_ALPHA);
  89.       cssValueToInternalValueMap.put("upper-alpha", javax.swing.text.html.CSS.Value.UPPER_ALPHA);
  90.       Attribute[] var2 = javax.swing.text.html.CSS.Attribute.allAttributes;
  91.  
  92.       try {
  93.          for(int var3 = 0; var3 < var2.length; ++var3) {
  94.             StyleContext.registerStaticAttributeKey(var2[var3]);
  95.          }
  96.       } catch (Throwable var4) {
  97.          var4.printStackTrace();
  98.       }
  99.  
  100.    }
  101.  
  102.    public CSS() {
  103.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.FONT_SIZE, new FontSize(this));
  104.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.FONT_FAMILY, new FontFamily());
  105.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.FONT_WEIGHT, new FontWeight());
  106.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_STYLE, new BorderStyle());
  107.       ColorValue var1 = new ColorValue();
  108.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.COLOR, var1);
  109.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BACKGROUND_COLOR, var1);
  110.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_COLOR, var1);
  111.       LengthValue var2 = new LengthValue();
  112.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.MARGIN_TOP, var2);
  113.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.MARGIN_BOTTOM, var2);
  114.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.MARGIN_LEFT, var2);
  115.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.MARGIN_RIGHT, var2);
  116.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.PADDING_TOP, var2);
  117.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.PADDING_BOTTOM, var2);
  118.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.PADDING_LEFT, var2);
  119.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.PADDING_RIGHT, var2);
  120.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_WIDTH, var2);
  121.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_TOP_WIDTH, var2);
  122.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_BOTTOM_WIDTH, var2);
  123.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_LEFT_WIDTH, var2);
  124.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.BORDER_RIGHT_WIDTH, var2);
  125.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.TEXT_INDENT, var2);
  126.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.WIDTH, var2);
  127.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.HEIGHT, var2);
  128.       StringValue var3 = new StringValue();
  129.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.FONT_STYLE, var3);
  130.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.TEXT_DECORATION, var3);
  131.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.TEXT_ALIGN, var3);
  132.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN, var3);
  133.       this.valueConvertor.put(javax.swing.text.html.CSS.Attribute.LIST_STYLE_TYPE, new ListType());
  134.       CssValue var4 = new CssValue();
  135.       int var5 = javax.swing.text.html.CSS.Attribute.allAttributes.length;
  136.  
  137.       for(int var6 = 0; var6 < var5; ++var6) {
  138.          Attribute var7 = javax.swing.text.html.CSS.Attribute.allAttributes[var6];
  139.          if (this.valueConvertor.get(var7) == null) {
  140.             this.valueConvertor.put(var7, var4);
  141.          }
  142.       }
  143.  
  144.    }
  145.  
  146.    // $FF: synthetic method
  147.    static Hashtable access$0() {
  148.       return cssValueToInternalValueMap;
  149.    }
  150.  
  151.    // $FF: synthetic method
  152.    static Hashtable access$1() {
  153.       return htmlValueToCssValueMap;
  154.    }
  155.  
  156.    static String colorToHex(Color var0) {
  157.       String var1 = new String("#");
  158.       String var2 = Integer.toHexString(var0.getRed());
  159.       if (var2.length() > 2) {
  160.          var2 = var2.substring(0, 2);
  161.       } else if (var2.length() < 2) {
  162.          var1 = var1 + "0" + var2;
  163.       } else {
  164.          var1 = var1 + var2;
  165.       }
  166.  
  167.       var2 = Integer.toHexString(var0.getGreen());
  168.       if (var2.length() > 2) {
  169.          var2 = var2.substring(0, 2);
  170.       } else if (var2.length() < 2) {
  171.          var1 = var1 + "0" + var2;
  172.       } else {
  173.          var1 = var1 + var2;
  174.       }
  175.  
  176.       var2 = Integer.toHexString(var0.getBlue());
  177.       if (var2.length() > 2) {
  178.          var2 = var2.substring(0, 2);
  179.       } else if (var2.length() < 2) {
  180.          var1 = var1 + "0" + var2;
  181.       } else {
  182.          var1 = var1 + var2;
  183.       }
  184.  
  185.       return var1;
  186.    }
  187.  
  188.    Object cssValueToStyleConstantsValue(StyleConstants var1, Object var2) {
  189.       return var2 instanceof CssValue ? ((CssValue)var2).toStyleConstants(var1) : null;
  190.    }
  191.  
  192.    public static Attribute[] getAllAttributeKeys() {
  193.       Attribute[] var0 = new Attribute[javax.swing.text.html.CSS.Attribute.allAttributes.length];
  194.       System.arraycopy(javax.swing.text.html.CSS.Attribute.allAttributes, 0, var0, 0, javax.swing.text.html.CSS.Attribute.allAttributes.length);
  195.       return var0;
  196.    }
  197.  
  198.    public static final Attribute getAttribute(String var0) {
  199.       return (Attribute)attributeMap.get(var0);
  200.    }
  201.  
  202.    int getBaseFontSize() {
  203.       return this.baseFontSize;
  204.    }
  205.  
  206.    Color getColor(AttributeSet var1, Attribute var2) {
  207.       ColorValue var3 = (ColorValue)var1.getAttribute(var2);
  208.       return var3 != null ? var3.getValue() : null;
  209.    }
  210.  
  211.    private Attribute getCssAlignAttribute(HTML.Tag var1, AttributeSet var2) {
  212.       return javax.swing.text.html.CSS.Attribute.TEXT_ALIGN;
  213.    }
  214.  
  215.    private Attribute[] getCssAttribute(HTML.Attribute var1) {
  216.       return (Attribute[])htmlAttrToCssAttrMap.get(var1);
  217.    }
  218.  
  219.    Object getCssValue(Attribute var1, String var2) {
  220.       CssValue var3 = (CssValue)this.valueConvertor.get(var1);
  221.       Object var4 = var3.parseHtmlValue(var2);
  222.       return var4;
  223.    }
  224.  
  225.    Font getFont(StyleContext var1, AttributeSet var2, int var3) {
  226.       FontSize var4 = (FontSize)var2.getAttribute(javax.swing.text.html.CSS.Attribute.FONT_SIZE);
  227.       int var5 = var4 != null ? (int)var4.getValue(var2) : var3;
  228.       StringValue var6 = (StringValue)var2.getAttribute(javax.swing.text.html.CSS.Attribute.VERTICAL_ALIGN);
  229.       if (var6 != null) {
  230.          String var7 = ((CssValue)var6).toString();
  231.          if (var7.indexOf("sup") >= 0 || var7.indexOf("sub") >= 0) {
  232.             var5 -= 2;
  233.          }
  234.       }
  235.  
  236.       FontFamily var13 = (FontFamily)var2.getAttribute(javax.swing.text.html.CSS.Attribute.FONT_FAMILY);
  237.       String var8 = var13 != null ? var13.getValue() : "SansSerif";
  238.       int var9 = 0;
  239.       FontWeight var10 = (FontWeight)var2.getAttribute(javax.swing.text.html.CSS.Attribute.FONT_WEIGHT);
  240.       if (var10 != null && var10.getValue() > 400) {
  241.          var9 |= 1;
  242.       }
  243.  
  244.       Object var11 = var2.getAttribute(javax.swing.text.html.CSS.Attribute.FONT_STYLE);
  245.       if (var11 != null && var11.toString().indexOf("italic") >= 0) {
  246.          var9 |= 2;
  247.       }
  248.  
  249.       Font var12 = var1.getFont(var8, var9, var5);
  250.       return var12;
  251.    }
  252.  
  253.    private HTML.Tag getHTMLTag(AttributeSet var1) {
  254.       Object var2 = var1.getAttribute(StyleConstants.NameAttribute);
  255.       if (var2 instanceof HTML.Tag) {
  256.          HTML.Tag var3 = (HTML.Tag)var2;
  257.          return var3;
  258.       } else {
  259.          return null;
  260.       }
  261.    }
  262.  
  263.    static int getIndexOfSize(float var0) {
  264.       for(int var1 = 0; var1 < sizeMap.length; ++var1) {
  265.          if (var0 <= (float)sizeMap[var1]) {
  266.             return var1;
  267.          }
  268.       }
  269.  
  270.       return sizeMap.length - 1;
  271.    }
  272.  
  273.    Object getInternalCSSValue(Attribute var1, String var2) {
  274.       CssValue var3 = (CssValue)this.valueConvertor.get(var1);
  275.       return var3.parseCssValue(var2);
  276.    }
  277.  
  278.    float getLength(AttributeSet var1, Attribute var2) {
  279.       LengthValue var3 = (LengthValue)var1.getAttribute(var2);
  280.       float var4 = var3 != null ? var3.getValue() : 0.0F;
  281.       return var4;
  282.    }
  283.  
  284.    float getPointSize(int var1) {
  285.       if (var1 < 0) {
  286.          return (float)sizeMap[0];
  287.       } else {
  288.          return var1 > sizeMap.length - 1 ? (float)sizeMap[sizeMap.length - 1] : (float)sizeMap[var1];
  289.       }
  290.    }
  291.  
  292.    float getPointSize(String var1) {
  293.       if (var1 != null) {
  294.          if (var1.startsWith("+")) {
  295.             int var4 = Integer.valueOf(var1.substring(1));
  296.             return this.getPointSize(this.baseFontSize + var4);
  297.          } else if (var1.startsWith("-")) {
  298.             int var2 = -Integer.valueOf(var1.substring(1));
  299.             return this.getPointSize(this.baseFontSize + var2);
  300.          } else {
  301.             int var3 = Integer.valueOf(var1);
  302.             return this.getPointSize(var3);
  303.          }
  304.       } else {
  305.          return 0.0F;
  306.       }
  307.    }
  308.  
  309.    static final Value getValue(String var0) {
  310.       return (Value)valueMap.get(var0);
  311.    }
  312.  
  313.    static final Color hexToColor(String var0) {
  314.       if (var0.startsWith("#")) {
  315.          String var1 = var0.substring(1, Math.min(var0.length(), 7));
  316.          String var2 = "0x" + var1;
  317.          Color var3 = Color.decode(var2);
  318.          return var3;
  319.       } else {
  320.          return null;
  321.       }
  322.    }
  323.  
  324.    private boolean isFloater(String var1) {
  325.       return var1.equals("left") || var1.equals("right");
  326.    }
  327.  
  328.    private boolean isHTMLFontTag(HTML.Tag var1) {
  329.       return var1 != null && (var1 == Tag.FONT || var1 == Tag.BASEFONT);
  330.    }
  331.  
  332.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  333.       var1.defaultReadObject();
  334.       int var2 = var1.readInt();
  335.       this.valueConvertor = new Hashtable(Math.max(1, var2));
  336.  
  337.       while(var2-- > 0) {
  338.          Object var3 = var1.readObject();
  339.          Object var4 = var1.readObject();
  340.          Object var5 = StyleContext.getStaticAttribute(var3);
  341.          if (var5 != null) {
  342.             var3 = var5;
  343.          }
  344.  
  345.          Object var6 = StyleContext.getStaticAttribute(var4);
  346.          if (var6 != null) {
  347.             var4 = var6;
  348.          }
  349.  
  350.          if (var3 != null && var4 != null) {
  351.             this.valueConvertor.put(var3, var4);
  352.          }
  353.       }
  354.  
  355.    }
  356.  
  357.    void setBaseFontSize(int var1) {
  358.       if (var1 < 1) {
  359.          this.baseFontSize = 0;
  360.       } else if (var1 > 7) {
  361.          this.baseFontSize = 7;
  362.       } else {
  363.          this.baseFontSize = var1;
  364.       }
  365.  
  366.    }
  367.  
  368.    void setBaseFontSize(String var1) {
  369.       if (var1 != null) {
  370.          if (var1.startsWith("+")) {
  371.             int var2 = Integer.valueOf(var1.substring(1));
  372.             this.setBaseFontSize(this.baseFontSize + var2);
  373.          } else if (var1.startsWith("-")) {
  374.             int var3 = -Integer.valueOf(var1.substring(1));
  375.             this.setBaseFontSize(this.baseFontSize + var3);
  376.          } else {
  377.             this.setBaseFontSize(Integer.valueOf(var1));
  378.          }
  379.       }
  380.  
  381.    }
  382.  
  383.    static Color stringToColor(String var0) {
  384.       Color var1 = null;
  385.       if (var0.charAt(0) == '#') {
  386.          var1 = hexToColor(var0);
  387.       } else if (var0.equalsIgnoreCase("Black")) {
  388.          var1 = hexToColor("#000000");
  389.       } else if (var0.equalsIgnoreCase("Silver")) {
  390.          var1 = hexToColor("#C0C0C0");
  391.       } else if (var0.equalsIgnoreCase("Gray")) {
  392.          var1 = hexToColor("#808080");
  393.       } else if (var0.equalsIgnoreCase("White")) {
  394.          var1 = hexToColor("#FFFFFF");
  395.       } else if (var0.equalsIgnoreCase("Maroon")) {
  396.          var1 = hexToColor("#800000");
  397.       } else if (var0.equalsIgnoreCase("Red")) {
  398.          var1 = hexToColor("#FF0000");
  399.       } else if (var0.equalsIgnoreCase("Purple")) {
  400.          var1 = hexToColor("#800080");
  401.       } else if (var0.equalsIgnoreCase("Fuchsia")) {
  402.          var1 = hexToColor("#FF00FF");
  403.       } else if (var0.equalsIgnoreCase("Green")) {
  404.          var1 = hexToColor("#008000");
  405.       } else if (var0.equalsIgnoreCase("Lime")) {
  406.          var1 = hexToColor("#00FF00");
  407.       } else if (var0.equalsIgnoreCase("Olive")) {
  408.          var1 = hexToColor("#808000");
  409.       } else if (var0.equalsIgnoreCase("Yellow")) {
  410.          var1 = hexToColor("#FFFF00");
  411.       } else if (var0.equalsIgnoreCase("Navy")) {
  412.          var1 = hexToColor("#000080");
  413.       } else if (var0.equalsIgnoreCase("Blue")) {
  414.          var1 = hexToColor("#0000FF");
  415.       } else if (var0.equalsIgnoreCase("Teal")) {
  416.          var1 = hexToColor("#008080");
  417.       } else if (var0.equalsIgnoreCase("Aqua")) {
  418.          var1 = hexToColor("#00FFFF");
  419.       }
  420.  
  421.       return var1;
  422.    }
  423.  
  424.    Attribute styleConstantsKeyToCSSKey(StyleConstants var1) {
  425.       return (Attribute)styleConstantToCssMap.get(var1);
  426.    }
  427.  
  428.    Object styleConstantsValueToCSSValue(StyleConstants var1, Object var2) {
  429.       Attribute var3 = this.styleConstantsKeyToCSSKey(var1);
  430.       if (var3 != null) {
  431.          CssValue var4 = (CssValue)this.valueConvertor.get(var3);
  432.          return var4.fromStyleConstants(var1, var2);
  433.       } else {
  434.          return null;
  435.       }
  436.    }
  437.  
  438.    private void translateAttribute(HTML.Attribute var1, AttributeSet var2, MutableAttributeSet var3) {
  439.       Attribute[] var4 = this.getCssAttribute(var1);
  440.       String var5 = (String)var2.getAttribute(var1);
  441.       if (var4 != null && var5 != null) {
  442.          for(int var6 = 0; var6 < var4.length; ++var6) {
  443.             Object var7 = this.getCssValue(var4[var6], var5);
  444.             if (var7 != null) {
  445.                var3.addAttribute(var4[var6], var7);
  446.             }
  447.          }
  448.  
  449.       }
  450.    }
  451.  
  452.    private void translateAttributes(HTML.Tag var1, AttributeSet var2, MutableAttributeSet var3) {
  453.       Enumeration var4 = var2.getAttributeNames();
  454.  
  455.       while(var4.hasMoreElements()) {
  456.          Object var5 = var4.nextElement();
  457.          if (var5 instanceof HTML.Attribute) {
  458.             HTML.Attribute var6 = (HTML.Attribute)var5;
  459.             if (var6 == javax.swing.text.html.HTML.Attribute.ALIGN) {
  460.                String var7 = (String)var2.getAttribute(javax.swing.text.html.HTML.Attribute.ALIGN);
  461.                if (var7 != null) {
  462.                   Attribute var8 = this.getCssAlignAttribute(var1, var2);
  463.                   if (var8 != null) {
  464.                      Object var9 = this.getCssValue(var8, var7);
  465.                      if (var9 != null) {
  466.                         var3.addAttribute(var8, var9);
  467.                      }
  468.                   }
  469.                }
  470.             } else if (var6 != javax.swing.text.html.HTML.Attribute.SIZE || this.isHTMLFontTag(var1)) {
  471.                this.translateAttribute(var6, var2, var3);
  472.             }
  473.          } else if (var5 instanceof Attribute) {
  474.             var3.addAttribute(var5, var2.getAttribute(var5));
  475.          }
  476.       }
  477.  
  478.    }
  479.  
  480.    private void translateEmbeddedAttributes(AttributeSet var1, MutableAttributeSet var2) {
  481.       Enumeration var3 = var1.getAttributeNames();
  482.  
  483.       while(var3.hasMoreElements()) {
  484.          Object var4 = var3.nextElement();
  485.          if (var4 instanceof HTML.Tag) {
  486.             HTML.Tag var5 = (HTML.Tag)var4;
  487.             Object var6 = var1.getAttribute(var5);
  488.             if (var6 != null && var6 instanceof AttributeSet) {
  489.                this.translateAttributes(var5, (AttributeSet)var6, var2);
  490.             }
  491.          } else if (var4 instanceof Attribute) {
  492.             var2.addAttribute(var4, var1.getAttribute(var4));
  493.          }
  494.       }
  495.  
  496.    }
  497.  
  498.    AttributeSet translateHTMLToCSS(AttributeSet var1) {
  499.       SimpleAttributeSet var2 = new SimpleAttributeSet();
  500.       Element var3 = (Element)var1;
  501.       HTML.Tag var4 = this.getHTMLTag(var1);
  502.       if (var4 == Tag.TD || var4 == Tag.TH) {
  503.          AttributeSet var5 = var3.getParentElement().getParentElement().getAttributes();
  504.          this.translateAttribute(javax.swing.text.html.HTML.Attribute.BORDER, var5, var2);
  505.          String var6 = (String)var5.getAttribute(javax.swing.text.html.HTML.Attribute.CELLPADDING);
  506.          if (var6 != null) {
  507.             Object var7 = this.getInternalCSSValue(javax.swing.text.html.CSS.Attribute.PADDING_TOP, var6);
  508.             var2.addAttribute(javax.swing.text.html.CSS.Attribute.PADDING_TOP, var7);
  509.             var2.addAttribute(javax.swing.text.html.CSS.Attribute.PADDING_BOTTOM, var7);
  510.             var2.addAttribute(javax.swing.text.html.CSS.Attribute.PADDING_LEFT, var7);
  511.             var2.addAttribute(javax.swing.text.html.CSS.Attribute.PADDING_RIGHT, var7);
  512.          }
  513.       }
  514.  
  515.       if (var3.isLeaf()) {
  516.          this.translateEmbeddedAttributes(var1, var2);
  517.       } else {
  518.          this.translateAttributes(var4, var1, var2);
  519.       }
  520.  
  521.       return var2;
  522.    }
  523.  
  524.    private boolean validTextAlignValue(String var1) {
  525.       return this.isFloater(var1) || var1.equals("center");
  526.    }
  527.  
  528.    private void writeObject(ObjectOutputStream var1) throws IOException {
  529.       var1.defaultWriteObject();
  530.       Enumeration var2 = this.valueConvertor.keys();
  531.       var1.writeInt(this.valueConvertor.size());
  532.       if (var2 != null) {
  533.          while(var2.hasMoreElements()) {
  534.             Object var3 = var2.nextElement();
  535.             Object var4 = this.valueConvertor.get(var3);
  536.             if (!(var3 instanceof Serializable) && (var3 = StyleContext.getStaticAttributeKey(var3)) == null) {
  537.                var3 = null;
  538.                var4 = null;
  539.             } else if (!(var4 instanceof Serializable) && (var4 = StyleContext.getStaticAttributeKey(var4)) == null) {
  540.                var3 = null;
  541.                var4 = null;
  542.             }
  543.  
  544.             var1.writeObject(var3);
  545.             var1.writeObject(var4);
  546.          }
  547.       }
  548.  
  549.    }
  550. }
  551.